/**************************************************************
 *
 * Copyright (c) 2008, ******, All Rights Reserved.
 *
 * 名 称:
 *		base_service.h
 * 位 置:
 *		inc/biz/base_service.h
 * 描 述:
 *		基础服务类
 * 备 注:
 *		无
 * 修 改:
 *		2008-09-20  Simon   - 创建
 *
 **************************************************************/

#ifndef __BIZ_BASE_SERVICE_H__
#define __BIZ_BASE_SERVICE_H__

#include <string>
#include "occi.h"
#include "pub/db.h"
#include "pub/str.h"
#include "biz/pub_acct.h"
#include "biz/pub_log.h"
#include "biz/pub_priv.h"
#include "biz/pub_serial.h"
#include "biz/pub_sys.h"

using namespace std;
using namespace oracle::occi;

class BaseService
{

public:
    //受理信息
    String serviceCode;   		//功能代码
	String acceptMethod;		//受理方式
	String channelCode;			//渠道代码
	String regionCode;			//地区代码
	String branchCode;			//网点代码
	String opID;				//操作员编号

	String returnCode;			//返回代码
	String returnMsg;			//返回信息

protected:
	ConnectionPoolWrapper* pool;
	Connection* conn;

protected:
	String businessCode;		//业务代码
	String sysDate;				//系统日期
	String sysTime;				//系统时间
	String tradeDate;			//交易日期
	String tradeTime;			//交易时间

protected:
	PubSystem* sys;				//系统信息
	PubAccount* acct;			//账户信息
	PubPriv* priv;				//权限信息
	PubSerial* serial;			//流水信息
	PubLog* log;				//日志信息

public:
	//构造函数
	BaseService();

	//析构函数
	virtual ~BaseService();

public:
	//检查输入参数
	virtual void checkData();

	//初始化
	virtual void init();

	//检查功能权限
	virtual void checkPriv();

	//检查条件是否满足
	virtual void checkCondition();

	//写入操作日志
	virtual void writeLog();

	//功能处理
	virtual void process() = 0;

	//执行
	void execute();
};

#endif
